module tour/addressBook1

// 名前
sig Name {}

// アドレス
sig Addr {}

// アドレス帳
sig Book { 
	addr: Name -> lone Addr
}

// 表示
pred show (b:Book) {
	// アドレス帳に1つ以上のアドレスが存在できることを確認。
	#b.addr > 1
	
	// 1つの名称に紐づくアドレスが指定した数存在できるか確認。
	// some n: Name | #n.(b.addr) < 1

	// アドレス帳のアドレスと紐づく名称が複数あるパターンを確認。
	#Name.(b.addr) > 1

}

run show for 5 but 1 Book
